﻿
#include"BinarySearchTree.h"
#include<string>
//int main()
//{
//	int a[] = { 8, 3, 1, 10, 6, 4, 7, 14, 13 };
//	Key::BSTree<int> BST;
//	for (auto key : a)
//	{
//		BST.Insert(key);
//	}
//	BST._InOrder();
//	for (auto k : a)
//	{
//		BST.Erase(k);
//		BST._InOrder();
//	}
//	/*BST.Erase(3);
//	BST._InOrder();*/
//
//	
//
//	return 0;
//}

//int main()
//{
//	Key_Value::BSTree<string, string> dict;
//	//BSTree<string, string> copy = dict;
//	dict.Insert("left", "左边");
//	dict.Insert("right", "右边");
//	dict.Insert("insert", "插入");
//	dict.Insert("string", "字符串");
//	string str;
//	while (cin >> str)
//	{
//		auto ret = dict.Find(str);
//		if (ret)
//		{
//			cout << "->" << ret->_val << endl;
//		}
//		else
//		{
//			cout << "无此单词，请重新输入" << endl;
//		}
//	}
//	return 0;
//}

int main()
{
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜",
   "苹果", "香蕉", "苹果", "香蕉" };
	Key_Value::BSTree<string, int> countTree;
	for (const auto& str : arr)
	{
		auto ret = countTree.Find(str);
		if (ret == NULL)
		{
			countTree.Insert(str, 1);
		}
		else
		{
			ret->_val++;
		}
	}
	countTree._InOrder();
	Key_Value::BSTree<string, int> B = countTree;// 浅拷贝前面的析构了，后面析构就会解引用野指针
	B._InOrder();
	return 0;
}

